import { Random, mock } from 'mockjs';

// 所属科研平台
const researchPlatforms = [
  '国家测绘地理信息局矿山空间信息技术实验室',
  '河南省测绘地理信息局矿山空间技术实验室',
  '测绘科学与技术博士后科研流动站',
  '河南省空间信息获取处理院士工作站',
  '国土部野外科学观测研究基地',
  '开采沉陷与土地规划利用研究所',
  '智慧中原地理信息河南省协同创新分中心',
  '北斗导航技术河南省协同创新分中心',
  '土地经济与城乡发展中心',
];

const titles = [
  '采动覆岩与水环境协同作用机理及地表沉陷预测模型构建	',
  '关中农村居民生活节水行为研究：行为解析-语境分析-3C理论',
  '东天山长时序遥感冰川形态参数变化特征研究',
  '基于地表-大气逐次解耦的陆地上空气溶胶偏振反演研究	',
  '基于半监督随机森林的城市地表覆盖主被动遥感数据协同分类研究',
  '太行山绿化工程油松人工林水源涵养服务形成过程与变化机理研究',
  '黄土高原水土流失综合治理技术及示范子课题',
  '丹江口库区大气氮沉降富营养效应评估与流域氮素管理研究',
];
const avatars = [
  'https://static.easyicon.net/preview/119/1193402.gif', // Alipay
  'https://static.easyicon.net/preview/119/1193384.gif', // Angular
  'https://static.easyicon.net/preview/119/1193381.gif', // Ant Design
  'https://static.easyicon.net/preview/119/1193374.gif', // Ant Design Pro
  'https://static.easyicon.net/preview/119/1193413.gif', // Bootstrap
  'https://static.easyicon.net/preview/119/1193431.gif', // React
  'https://static.easyicon.net/preview/119/1193400.gif', // Vue
  'https://static.easyicon.net/preview/119/1193365.gif', // Webpack
];

const avatars2 = [
  'https://gw.alipayobjects.com/zos/antfincdn/XAosXuNZyF/BiazfanxmamNRoxxVxka.png',
  'https://gw.alipayobjects.com/zos/rmsportal/cnrhVkzwxjPwAaCfPbdc.png',
  'https://gw.alipayobjects.com/zos/rmsportal/gaOngJwsRYRaVAuXXcmB.png',
  'https://gw.alipayobjects.com/zos/rmsportal/ubnKSIfAJTxIgXOKlciN.png',
  'https://gw.alipayobjects.com/zos/rmsportal/WhxKECPNujWoWEFNdnJE.png',
  'https://gw.alipayobjects.com/zos/rmsportal/jZUIxmJycoymBprLOUbT.png',
  'https://gw.alipayobjects.com/zos/rmsportal/psOgztMplJMGpVEqfcgF.png',
  'https://gw.alipayobjects.com/zos/rmsportal/ZpBqSxLxVEXfcUNoPKrz.png',
  'https://gw.alipayobjects.com/zos/rmsportal/laiEnJdGHVOhJrUShBaJ.png',
  'https://gw.alipayobjects.com/zos/rmsportal/UrQsqscbKEpNuJcvBZBu.png',
];

const covers = [
  'https://gw.alipayobjects.com/zos/rmsportal/uMfMFlvUuceEyPpotzlq.png',
  'https://gw.alipayobjects.com/zos/rmsportal/iZBVOIhGJiAnhplqjvZW.png',
  'https://gw.alipayobjects.com/zos/rmsportal/iXjVmWVHbCJAyqvDxdtx.png',
  'https://gw.alipayobjects.com/zos/rmsportal/gLaIAoVWTtLbBWZNYEMg.png',
];
const desc = [
  '那是一种内在的东西， 他们到达不了，也无法触及的',
  '希望是一个好东西，也许是最好的，好东西是不会消亡的',
  '生命就像一盒巧克力，结果往往出人意料',
  '城镇中有那么多的酒馆，她却偏偏走进了我的酒馆',
  '那时候我只会想自己想要什么，从不想自己拥有什么',
];

// const user = [
//   '付小小',
//   '曲丽丽',
//   '林东东',
//   '周星星',
//   '吴加好',
//   '朱偏右',
//   '鱼酱',
//   '乐哥',
//   '谭小仪',
//   '仲尼',
// ];

function fakeList(count) {
  const list = [];
  for (let i = 0; i < count; i += 1) {
    list.push({
      id: mock('@id'),
      owner: mock('@cname'),
      title: Random.cword(3, 5),
      avatar: Random.image('100x100', Random.color(), Random.cword()),
      cover: parseInt(i / 4, 10) % 2 === 0 ? covers[i % 4] : covers[3 - (i % 4)],
      status: ['active', 'exception', 'normal'][i % 3],
      percent: Math.ceil(Math.random() * 50) + 50,
      logo: avatars[i % 8],
      href: '/',
      updatedAt: new Date(new Date().getTime() - 1000 * 60 * 60 * 2 * i),
      createdAt: new Date(new Date().getTime() - 1000 * 60 * 60 * 2 * i),
      subDescription: desc[i % 5],
      description: mock('@cparagraph()'),
      activeUser: Math.ceil(Math.random() * 1000) + 300,
      newUser: Math.ceil(Math.random() * 100) + 50,
      star: Math.ceil(Math.random() * 100) + 100,
      like: Math.ceil(Math.random() * 100) + 100,
      message: Math.ceil(Math.random() * 10) + 10,
      content: Random.cparagraph(),
      members: [
        {
          avatar: 'https://gw.alipayobjects.com/zos/rmsportal/ZiESqWwCXBRQoaPONSJe.png',
          name: Random.cname(),
          id: 'member1',
        },
        {
          avatar: 'https://gw.alipayobjects.com/zos/rmsportal/tBOxZPlITHqwlGjsJWaF.png',
          name: Random.cname(),
          id: 'member2',
        },
        {
          avatar: 'https://gw.alipayobjects.com/zos/rmsportal/sBxjgqiuHMGRkIjqlQCd.png',
          name: Random.cname(),
          id: 'member3',
        },
      ],
    });
  }

  return list;
}

let sourceData;

function getFakeList(req, res) {
  const params = req.query;

  const count = params.count * 1 || 20;

  const result = fakeList(count);
  sourceData = result;
  return res.json(result);
}

function postFakeList(req, res) {
  const { /* url = '', */ body } = req;
  // const params = getUrlParams(url);
  const { method, id } = body;
  // const count = (params.count * 1) || 20;
  let result = sourceData;

  switch (method) {
    case 'delete':
      result = result.filter(item => item.id !== id);
      break;
    case 'update':
      result.forEach((item, i) => {
        if (item.id === id) {
          result[i] = Object.assign(item, body);
        }
      });
      break;
    case 'post':
      result.unshift({
        body,
        id: `fake-list-${result.length}`,
        createdAt: new Date().getTime(),
      });
      break;
    default:
      break;
  }

  return res.json(result);
}

// const getNotice = [
//   {
//     id: 'xxx1',
//     title: titles[0],
//     logo: avatars[0],
//     description: '那是一种内在的东西，他们到达不了，也无法触及的',
//     updatedAt: new Date(),
//     member: '国家测绘',
//     href: '',
//     memberLink: '',
//   },
//   {
//     id: 'xxx2',
//     title: titles[1],
//     logo: avatars[1],
//     description: '希望是一个好东西，也许是最好的，好东西是不会消亡的',
//     updatedAt: new Date('2017-07-24'),
//     member: '全组都是吴彦祖',
//     href: '',
//     memberLink: '',
//   },
//   {
//     id: 'xxx3',
//     title: titles[2],
//     logo: avatars[2],
//     description: '城镇中有那么多的酒馆，她却偏偏走进了我的酒馆',
//     updatedAt: new Date(),
//     member: '中二少女团',
//     href: '',
//     memberLink: '',
//   },
//   {
//     id: 'xxx4',
//     title: titles[3],
//     logo: avatars[3],
//     description: '那时候我只会想自己想要什么，从不想自己拥有什么',
//     updatedAt: new Date('2017-07-23'),
//     member: '程序员日常',
//     href: '',
//     memberLink: '',
//   },
//   {
//     id: 'xxx5',
//     title: titles[4],
//     logo: avatars[4],
//     description: '凛冬将至',
//     updatedAt: new Date('2017-07-23'),
//     member: '高逼格设计天团',
//     href: '',
//     memberLink: '',
//   },
//   {
//     id: 'xxx6',
//     title: titles[5],
//     logo: avatars[5],
//     description: '生命就像一盒巧克力，结果往往出人意料',
//     updatedAt: new Date('2017-07-23'),
//     member: '骗你来学计算机',
//     href: '',
//     memberLink: '',
//   },
// ];

const getNotice = researchPlatforms.map((item, index) => ({
  id: Random.guid(),
  title: titles[index % 8],
  logo: avatars[index % 8],
  description: Random.cparagraph(),
  updatedAt: new Date('2017-07-23'),
  member: researchPlatforms[index],
  href: '',
  memberLink: '',
}));

const getActivities = [
  {
    id: 'trend-1',
    updatedAt: new Date(),
    user: {
      name: Random.cname(),
      avatar: avatars2[0],
    },
    group: {
      name: researchPlatforms[0],
      link: 'http://github.com/',
    },
    project: {
      name: '高强度开采地表生态环境演变机理与调控',
      link: 'http://github.com/',
    },
    template: '在 @{group} 新建项目 @{project}',
  },
  {
    id: 'trend-2',
    updatedAt: new Date(),
    user: {
      name: Random.cname(),
      avatar: avatars2[1],
    },
    group: {
      name: researchPlatforms[1],
      link: 'http://github.com/',
    },
    project: {
      name: '面向矿区空间信息资源共享服务的语义描述与应用模型研究',
      link: 'http://github.com/',
    },
    template: '在 @{group} 新建项目 @{project}',
  },
  {
    id: 'trend-3',
    updatedAt: new Date(),
    user: {
      name: Random.cname(),
      avatar: avatars2[2],
    },
    group: {
      name: researchPlatforms[2],
      link: 'http://github.com/',
    },
    project: {
      name: '华南岬间砂质海滩稳定性研究',
      link: 'http://github.com/',
    },
    template: '在 @{group} 新建项目 @{project}',
  },
  {
    id: 'trend-4',
    updatedAt: new Date(),
    user: {
      name: Random.cname(),
      avatar: avatars2[4],
    },
    project: {
      name: '流视角下区域空间联系及其地理集聚机理研究',
      link: 'http://github.com/',
    },
    template: '将 @{project} 更新至已发布状态',
  },
  {
    id: 'trend-5',
    updatedAt: new Date(),
    user: {
      name: Random.cname(),
      avatar: avatars2[3],
    },
    project: {
      name: 'GIS空间数据库模式匹配模型与方法研究',
      link: 'http://github.com/',
    },
    comment: {
      name: '留言',
      link: 'http://github.com/',
    },
    template: '在 @{project} 发布了 @{comment}',
  },
  {
    id: 'trend-6',
    updatedAt: new Date(),
    user: {
      name: Random.cname(),
      avatar: avatars2[5],
    },
    group: {
      name: researchPlatforms[3],
      link: 'http://github.com/',
    },
    project: {
      name: '矿山地表形变天地空一体化监测方法研究',
      link: 'http://github.com/',
    },
    template: '在 @{group} 新建项目 @{project}',
  },
];

function getFakeCaptcha(req, res) {
  return res.json('captcha-xxx');
}

export default {
  'GET /api/project/notice': getNotice,
  'GET /api/activities': getActivities,
  'POST /api/forms': (req, res) => {
    res.send({ message: 'Ok' });
  },
  'GET /api/tags': mock({
    'list|100': [{ name: '@city', 'value|1-100': 150, 'type|0-2': 1 }],
  }),
  'GET /api/fake_list': getFakeList,
  'POST /api/fake_list': postFakeList,
  'GET /api/captcha': getFakeCaptcha,
};
